package objects;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseManager extends SQLiteOpenHelper {

	private static final String DATABASE_NAME        = "SmartGYM";
	private static final String TABLA_USUARIO        = "Usuario";
	private static final String TABLA_EJERCICIOS     = "Ejercicios";
	private static final String TABLA_RUTINA         = "Rutina";
	private static final String TABLA_DETALLE_RUTINA = "DetalleRutina";
	private static final String TABLA_AVANCE         = "Avance";
	private static final String TABLA_CONSEJOS       = "Consejos";
	
	private boolean ejercicios;
	private boolean consejos;
	
	public DatabaseManager(Context context) {
		super(context, DATABASE_NAME, null, 1);
		this.ejercicios = false;
		this.consejos   = false;
	}
	
	public DatabaseManager(Context context, Boolean llenaEjercicios, Boolean llenaConsejos) {
		super(context, DATABASE_NAME, null, 1);
		this.ejercicios = llenaEjercicios;
		this.consejos   = llenaConsejos;
	}
	
	@Override
	public void onCreate(SQLiteDatabase db) {	
		
		creaTablas(db);
		
		if (ejercicios)
			llenaEjercicios(db);
		
		if (consejos)
			llenaConsejos(db);
		
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
		return;
	}
	
	private void creaTablas(SQLiteDatabase db) {
		String tablaUsuario = "";
		tablaUsuario += "CREATE TABLE IF NOT EXISTS " + TABLA_USUARIO;
		tablaUsuario +=      " (id               INTEGER PRIMARY KEY AUTOINCREMENT,";
		tablaUsuario +=      "  usuario          VARCHAR(15),";
		tablaUsuario +=      "  sexo             CHARACTER(1),";
		tablaUsuario +=      "  fecha_nacimiento CHARACTER(10),"; //AAAA-MM-DD
		tablaUsuario +=      "  edad             INTEGER,";
		tablaUsuario +=      "  peso             NUMERIC,";
		tablaUsuario +=      "  altura           INTEGER)";
		
		String tablaEjercicios = "";
		tablaEjercicios += "CREATE TABLE IF NOT EXISTS " + TABLA_EJERCICIOS;
		tablaEjercicios += 		"(id          INTEGER PRIMARY KEY AUTOINCREMENT,";
		tablaEjercicios += 		" nombre      VARCHAR(25),";
		tablaEjercicios +=      " descripcion VARCHAR(250),";
		tablaEjercicios +=		" tipo        CHARACTER(1),";
		tablaEjercicios +=		" imagen      VARCHAR(50),";
		tablaEjercicios +=		" pasos       INTEGER)";
		
		String tablaRutina = "";
		tablaRutina += "CREATE TABLE IF NOT EXISTS " + TABLA_RUTINA;
		tablaRutina += 		"(numero       INTEGER PRIMARY KEY AUTOINCREMENT,";
		tablaRutina +=		" fecha_inicio CHARACTER(10),";
		tablaRutina +=		" fecha_fin    CHARACTER(10),";
		tablaRutina +=		" usuario      INTEGER,";
		tablaRutina +=		" objetivo     INTEGER,";
		tablaRutina +=		" FOREIGN KEY (usuario) REFERENCES " + TABLA_USUARIO + " (id))";
		
		String tablaDetalleRutina = "";
		tablaDetalleRutina += "CREATE TABLE IF NOT EXISTS " + TABLA_DETALLE_RUTINA;
		tablaDetalleRutina += 	"(id           INTEGER PRIMARY KEY AUTOINCREMENT,";
		tablaDetalleRutina +=	" rutina       INTEGER,";
		tablaDetalleRutina +=	" ejercicio    INTEGER,";
		tablaDetalleRutina += 	" semanas      INTEGER,";
		tablaDetalleRutina += 	" fase         INTEGER,";
		tablaDetalleRutina += 	" series       INTEGER,";
		tablaDetalleRutina += 	" repeticiones INTEGER,";
		tablaDetalleRutina +=	" segundos     INTEGER,";
		tablaDetalleRutina += 	" FOREIGN KEY (rutina) REFERENCES " + TABLA_RUTINA + " (numero),";
		tablaDetalleRutina += 	" FOREIGN KEY (ejercicio) REFERENCES " + TABLA_EJERCICIOS + " (id))";
		
		String tablaAvance = "";
		tablaAvance += "CREATE TABLE IF NOT EXISTS " + TABLA_AVANCE;
		tablaAvance += 		"(id     INTEGER PRIMARY KEY AUTOINCREMENT,";
		tablaAvance += 		" rutina INTEGER,";
		tablaAvance +=  	" FOREIGN KEY (rutina) REFERENCES " + TABLA_RUTINA + " (numero))";
		
		String tablaConsejos = "";
		tablaConsejos += "CREATE TABLE IF NOT EXISTS " + TABLA_CONSEJOS;
		tablaConsejos += 		"(id            INTEGER PRIMARY KEY AUTOINCREMENT,";
		tablaConsejos += 		" consejo       VARCHAR(200),";
		tablaConsejos += 		" tipo          INTEGER,";
		tablaConsejos += 		" tipo_usuario  INTEGER,";
		tablaConsejos += 		" nivel_usuario INTEGER)";
		
		db.execSQL(tablaUsuario);
		db.execSQL(tablaEjercicios);
		db.execSQL(tablaRutina);
		db.execSQL(tablaDetalleRutina);
		db.execSQL(tablaAvance);
		db.execSQL(tablaConsejos);
	}
	
	private void llenaEjercicios (SQLiteDatabase db) {
		
	}
	
	private void llenaConsejos (SQLiteDatabase db) {
		
	}

}
